Building Caches using Multi-Threaded State Machines
نویسندگان
چکیده
Designing a client-side cache for a distributed file system is complicated by concurrent accesses by applications, network communication with the server, and complex relationships between the data in the cache. Despite these difficulties, caches are usually built using threads or finite state machines as the programming model, even though both are inadequate for the task. We have created an infrastructure for cache development based on multi-threaded state machines, which attempts to capitalize on the benefits of both programming models. The state machine allows the global state of the cache to be carefully controlled, allowing interactions between concurrent cache operations to be reasoned about and verified. Threads allow individual operations to maintain their own local state, and propagate that state across transitions of the state machine. We created a prototype of this infrastructure and used it to implement a write-through file block cache that provides multiple-reader/single-writer access to its blocks; although this is a relatively simple cache protocol, it is much easier to implement using multi-threaded state machines than using either threads or finite state machines alone.
منابع مشابه
Building a Domain-Knowledge Guided System Software Environment to Achieve High-Performance of Multi-core Processors
Although multi-core processors have become dominant computing units in basic system platforms from laptops to supercomputers, software development for effectively running various multi-threaded applications on multi-cores has not made much progress, and effective solutions are still limited to high performance applications relying on exiting parallel computing technology. In practice, majority ...
متن کاملDynamic Capacity-Speed Tradeoffs in SMT Processor Caches
Caches are designed to provide the best tradeoff between access speed and capacity for a set of target applications. Unfortunately, different applications, and even different phases within the same application, may require a different capacity-speed tradeoff. This problem is exacerbated in a Simultaneous Multi-Threaded (SMT) processor where the optimal cache design may vary drastically with the...
متن کاملAnaconda a Real-time Control-flow/data-flow Hybrid Processor
Typically real-time applications are written in a multi-threaded language and are executed on single threaded control-ow (von Neumann) processors. A software scheduler is used to switch between the application's multiple threads, thereby simulating a multi-threaded processor. Unfortunately software scheduling is problematic if real-time constraints are to be guaranteed and therefore static (pre...
متن کاملAutomated class testing using threaded multi-way trees to represent the behaviour of state machines
Extensive test data is required to demonstrate that " few " errors exist in software. If the process of software testing could be carried out automatically, testing efficiency would increase and the cost of software development would be significantly reduced. In this paper, a tool for detecting errors in object oriented classes is proposed. The approach uses a state-based testing method. The me...
متن کاملFine-Grained Multithreading Support for Hybrid Threaded MPI Programming
As high-end computing systems continue to grow in scale, recent advances in multiand many-core architectures have pushed such growth toward more denser architectures, that is, more processing elements per physical node, rather than more physical nodes themselves. Although a large number of scientific applications have relied so far on an MPI-everywhere model for programming high-end parallel sy...
متن کامل